// 存在 [单调性] 的情况下，可以利用滑动窗口来做题
// 常规步骤：1.进窗口 2.做判断 3.出窗口
// “更新结果”的位置就题论题
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int sum = 0;
        int left = 0;
        int right = 0;
        int ret = Integer.MAX_VALUE;
        while (right < nums.length) {
            sum += nums[right]; // 进窗口
            while(sum >= target) { // 循环检查
                ret = Math.min(ret, right - left + 1); // 更新结果
                sum -= nums[left]; // 出窗口
                left++;
            }
            right++;
        }
        if (ret == Integer.MAX_VALUE) return 0;
        return ret;
    }
}